package com.xmtlxx.web.controller.wms.service;

import com.xmtlxx.common.core.domain.PageQuery;
import com.xmtlxx.common.core.domain.R;
import com.xmtlxx.common.core.page.TableDataInfo;
import com.xmtlxx.wms.domain.bo.VerifyOpenAllCabinetBo;
import com.xmtlxx.wms.domain.bo.VerifyOutProBo;

import java.util.List;

/**
 * 智能柜服务
 *
 * @author hergreen
 * @date 2024/10/10 16:00
 **/
public interface SmartCabinetService {

    /**
     * 生成智能柜验证码
     *
     * @param type 类型
     * @param id   id
     * @return boolean
     * @author hergreen
     * @date 2024/10/09 09:16
     */
    boolean generateSmartCabinetCode(Integer type, String id);

    /**
     * 批量生成出库验证码
     *
     * @param type 类型
     * @param ids  ids
     * @return boolean
     * @author hergreen
     * @date 2024/10/09 09:16
     */
    boolean batchGenerateSmartCabinetCode(Integer type, List<String> ids);


    /**
     * 获取智能柜出库验财物
     *
     * @param pageQuery 分页
     * @param bo        bo
     * @return com.xmtlxx.common.core.page.TableDataInfo<com.xmtlxx.wms.domain.bo.VerifyOutProBo>
     * @author hergreen
     * @date 2024/10/10 18:23
     */
    TableDataInfo<VerifyOutProBo> getVerifyOutPro(PageQuery pageQuery, VerifyOutProBo bo);

    /**
     * 获取一键开柜智能柜
     *
     * @param pageQuery 分页
     * @return com.xmtlxx.common.core.page.TableDataInfo<com.xmtlxx.wms.domain.bo.VerifyOutProBo>
     * @author hergreen
     * @date 2024/10/10 18:33
     */
    TableDataInfo<VerifyOpenAllCabinetBo> getVerifyOpenAllCabinet(PageQuery pageQuery);

    /**
     * 验证智能柜验证码
     *
     * @param proId 财物id
     * @param code  验证码
     * @author hergreen
     * @date 2024/08/23 14:54
     */
    R<Void> verifySmartCabinetCode(String proId, String code, Integer type);

}
